#include <iostream>
#include <cstring>
using namespace std;

/*
    熟悉new和delete给结构体char *申请，释放堆空间
    熟悉引用定义的格式，定义不同类型的引用(重点理解引用是别名)
    &符号在C/C++有哪些含义
    答案： &在c中 表示取地址 运算符 &在c++中 多了个表示引用

    自己分析一下形参是引用跟形参是指针有什么不一样的（内存耗费，cpu执行的差别)
    int 插入学生信息(struct student &stu)形参是引用
    int 插入学生信息(struct student *stu)形参是指针

    答案： 传地址，形参是指针，和实参一样指向同一个内存空间，修改形参的值，实参的值也会改变， 但是实参和形参本身还是占用的不同的内存空间
           引用，完完全全就是他本身

*/

struct Student
{
    char name[20];
    int age;
    int score;
};

void printStudent(struct Student *&stu)
{
    cout << "printStudent " << stu->name << " " << stu->age << " " << stu->score << endl;
}

int main()
{
    struct Student *stu = new struct Student;
    strcpy(stu->name, "Tom");
    stu->age = 18;
    stu->score = 100;

    cout << "main " << stu->name << stu->age << stu->score << endl;

    struct Student *&stu2 = stu;
    printStudent(stu2);

    delete stu;
    stu = NULL;
    return 0;
}
